home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 November / Freeware November 1998.img / dist / fw_emacs.idb / usr / freeware / share / emacs / 19.34 / lisp / vt100-led.el.z / vt100-led.el
Lisp/Scheme  |  1998-10-27  |  2KB  |  69 lines

  1. ;;; vt100-led.el --- functions for LED control on VT-100 terminals & clones.
  2.  
  3. ;; Copyright (C) 1988 Free Software Foundation, Inc.
  4.  
  5. ;; Author: Howard Gayle
  6. ;; Maintainer: FSF
  7. ;; Keywords: hardware
  8.  
  9. ;; This file is part of GNU Emacs.
  10.  
  11. ;; GNU Emacs is free software; you can redistribute it and/or modify
  12. ;; it under the terms of the GNU General Public License as published by
  13. ;; the Free Software Foundation; either version 2, or (at your option)
  14. ;; any later version.
  15.  
  16. ;; GNU Emacs is distributed in the hope that it will be useful,
  17. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19. ;; GNU General Public License for more details.
  20.  
  21. ;; You should have received a copy of the GNU General Public License
  22. ;; along with GNU Emacs; see the file COPYING.  If not, write to the
  23. ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  24. ;; Boston, MA 02111-1307, USA.
  25.  
  26. ;;; Code:
  27.  
  28. (defvar led-state (make-vector 5 nil)
  29.    "The internal state of the LEDs.  Choices are nil, t, `flash.
  30. Element 0 is not used.")
  31.  
  32. (defun led-flash (l)
  33.   "Flash LED l."
  34.   (aset led-state l 'flash)
  35.   (led-update))
  36.  
  37. (defun led-off (&optional l)
  38.   "Turn off vt100 led number L.  With no argument, turn them all off."
  39.   (interactive "P")
  40.   (if l
  41.       (aset led-state (prefix-numeric-value l) nil)
  42.     (fillarray led-state nil))
  43.   (led-update))
  44.  
  45. (defun led-on (l)
  46.   "Turn on LED l."
  47.   (aset led-state l t)
  48.   (led-update))
  49.  
  50. (defun led-update ()
  51.   "Update the terminal's LEDs to reflect the internal state."
  52.   (let ((f "\e[?0")            ; String to flash.
  53.     (o "\e[0")            ; String for steady on.
  54.     (l 1))                ; Current LED number.
  55.     (while (/= l 5)
  56.       (let ((s (aref led-state l)))
  57.     (cond
  58.      ((eq s 'flash)
  59.       (setq f (concat f ";" (int-to-string l))))
  60.      (s
  61.       (setq o (concat o ";" (int-to-string l))))))
  62.       (setq l (1+ l)))
  63.     (setq o (concat o "q" f "t"))
  64.     (send-string-to-terminal o)))
  65.  
  66. (provide 'vt100-led)
  67.  
  68. ;;; vt100-led.el ends here
  69.